使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)

您所在的位置:网站首页 arduino 时钟模块 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)

使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)

2024-07-03 23:04:30| 来源: 网络整理| 查看: 265

如何使用Arduino对DS12C887时钟模块进行时间读写

搜了一下DS12C887的资料,最详细的是郭天祥关于这个模块的视频教程,教程中讲解了这个模块的使用手册和程序的编写,但是这个教程是在51单片机上讲的,由于51与Arduino的不同,把程序直接移植到Arduino上比较困难。

由于在网上没有搜到与这个时钟模块相关的Arduino库或基于arduino的教程,本人参考了一些资料,写出了Arduino下的程序,并成功进行了时间的读写,于是就把方法记录下来保存了。

本文将提供相应的接线方法以及程序。

先简单介绍一下DS12C887这个时钟模块:

可计算到2100年前的秒、分、小时、星期、日期、月、年七种日历信息并带闰年补偿; 自带晶体振荡器和锂电池。在没有外部电源的情况下可工作10年; ——百度百科

模块实物

缺点: 地址/数据总线有8根,占用了很多IO口 相比1302,3231时钟模块体积更大,不适合装在小体积产品上

零件表 零件数量arduino UNO1arduino 拓展版1DS12C887模块1面包板1电池1杜邦线若干 Arduino UNO+DS12C887接线

NC=not connect,就是不连接的意思。 MOT悬空即Inter总线模式,这里我们选用Inter总线模式,所以MOT引脚悬空。 NC为悬空 DS12C887对应Arduino UNO引脚:

DS12C887UNO4455667788991010111112GND1314(A0)1415(A1)1516(A2)1717(A3)18VCC191224VCC 程序源码 1const int dscs=14; 2const int dsas=15; 3const int dsrw=16; 4const int dsds=17; 5const int dsirq=12; 6//define bidirectional address-data bus(定义双向地址总线) 7const int ad[8]={4,5,6,7,8,9,10,11}; 8//寄存器A B C D的地址 9#define regA 0x0A 10#define regB 0x0B 11#define regC 0x0C 12#define regD 0x0D 13//函数声明 14void bus2out(); 15void bus2in(); 16void write_ds(byte add,byte date); 17byte read_ds(byte add); 18void set_time(); 19void set_alarm(byte ashi,byte afen,byte amiao); 20byte miao,fen,shi,ri,yue,nian,xq; 21int i; 22void setup() 23{ 24 Serial.begin(9600); 25 pinMode(dscs, OUTPUT); 26 pinMode(dsas, OUTPUT); 27 pinMode(dsrw, OUTPUT); 28 pinMode(dsds, OUTPUT); 29 pinMode(dsirq, OUTPUT); 30//芯片初始化 31// write_ds(regA,0x20); // 控制A寄存器来开启晶体振荡器且保持时钟运行。 32// write_ds(regB,0x26); //设置24小时模式,数据二进制模式,开启闹铃中断。 33//时间初始化 34// set_time();//设置初始时间,运行一次即可注释掉 35// set_alarm(13,30,0);//设置闹钟 36} 37void loop() 38{ 39 //读取时间 40 miao=read_ds(0); 41 fen=read_ds(2); 42 shi=read_ds(4); 43 ri=read_ds(7); 44 yue=read_ds(8); 45 nian=read_ds(9); 46 xq=read_ds(6); 47// miao=(miao&0x0f)+((miao&0xf0)>>4)*10;//若使用BCD码需要进行位运算处理 48 Serial.print(nian); 49 Serial.print("/"); 50 Serial.print(yue); 51 Serial.print("/"); 52 Serial.print(ri); 53 Serial.print(" "); 54 Serial.print(shi); 55 Serial.print(":"); 56 Serial.print(fen); 57 Serial.print(":"); 58 Serial.print(miao); 59 Serial.print(" 星期:"); 60 Serial.println(xq); 61} 62void bus2out(){ 63 for(i=0;i 69 for(i=0;i 76 bus2out(); //set address pins to output 77 digitalWrite(dscs,0); 78 digitalWrite(dsas,1); 79 digitalWrite(dsds,1); 80 digitalWrite(dsrw,1); 81 //set address on bus(写地址) 82 for(i=0;i116 write_ds(0,10);//秒117 write_ds(2,19);//分118 write_ds(4,13);//时119 write_ds(7,26);//日120 write_ds(8,2);//月121 write_ds(9,18);//年122 write_ds(6,1);//星期123}124void set_alarm(byte ashi,byte afen,byte amiao) //闹钟设初值125{126 write_ds(1,amiao);127 write_ds(3,afen);128 write_ds(5,ashi);129}

arduino程序源码以及DS12C887模块的中文手册: https://pan.baidu.com/s/1c369ui0



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭